#ifndef __IPV4_H__
#define __IPV4_H__

#include <stdint.h>
#include <stddef.h>

typedef struct {
    uint8_t  ver_ihl;        // 高4位表示版本号，低4位表示首部长度（以32位字为单位）
    uint8_t  tos;            // 服务类型（Type of Service）
    uint16_t total_length;    // IPv4数据报的总长度（包括首部和数据部分），单位为字节
    uint16_t id;              // 标识符，用于唯一标识发送的每一个数据报
    uint16_t flags_frag_offset;// 标志位和片偏移（Flags and Fragment Offset）
    uint8_t  ttl;             // 生存时间（Time to Live），表示数据报在网络中的最大跳数
    uint8_t  protocol;       // 表示该IP数据报携带的上层协议类型，例如TCP或UDP
    uint16_t checksum;        // IPv4首部校验和，用于错误检测
    uint8_t  src_ip[4];       // 源IP地址，占用4个字节
    uint8_t  dest_ip[4];      // 目的IP地址，占用4个字节
} IPv4Header;



int ipv4_make_reply(IPv4Header *ip,void * reply_buf,uint16_t reply_payload_len);



#endif